package com.edu.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.edu.entity.Course;
import com.baomidou.mybatisplus.extension.service.IService;
import com.edu.entity.course.CourseWebVo;
import com.edu.entity.vo.CoursePublishVo;
import com.edu.entity.vo.CourseQuery;

import java.util.List;

/**
 * <p>
 * 课程 服务类
 * </p>
 *
 * @author mxs
 * @since 2021-10-21
 */
public interface CourseService extends IService<Course> {
    /**
     * 保存课程信息 包括了课程信息表 和 课程描述
     * @param query
     * @return 返回课程id
     */
    public String saveCourseInfo(CourseQuery query);

    /**
     * 根据课程id查询课程信息（包括课程信息和课程描述，主键都为courseId）
     * @param courseId
     * @return
     */
    CourseQuery getCourseInfoByCourseId(Long courseId);

    /**
     * 修改课程信息（包括课程信息 和 课程描述）
     * @param courseInfo
     */
    public void updateCourseInfo(CourseQuery courseInfo);

    /**
     * 根据课程id返回课程最终信息确认类
     * @param courseId
     * @return
     */
    CoursePublishVo getCoursePublish(String courseId);

    /**
     * 根据course中的信息获取封装类
     * @param course
     * @return
     */
    QueryWrapper<Course> getCourseQueryWrapper(Course course);

    /**
     * 获取前8条课程信息
     * @return
     */
    List<Course> getHotCourse();

    /**
     * 查询课程信息
     * @param courseId
     * @return
     */
    CourseWebVo getBaseCourseInfo(String courseId);
}
